package com.sxj.shop.service.impl;

import com.sxj.shop.constant.DictConstant;
import com.sxj.shop.dao.ProductDao;
import com.sxj.shop.entity.Product;
import com.sxj.shop.exception.ProductNotExistException;
import com.sxj.shop.factory.ObjectFactory;
import com.sxj.shop.service.ProductService;
import com.sxj.shop.util.PageInfo;
import com.sxj.shop.util.ParameterUtil;

import java.util.List;

public class ProductServiceImpl implements ProductService {

    private ProductDao productDao = (ProductDao) ObjectFactory.getObject("productDao");

    @Override
    public List<Product> findAll() {
        return productDao.selectAll();
    }

    @Override
    public PageInfo<Product> findPage(String pageNo, String pageSize) throws ProductNotExistException {
        if (ParameterUtil.isNull(pageNo)) {
            pageNo = DictConstant.PRODUCT_DEFAULT_PAGE_NO;
        }
        if (ParameterUtil.isNull(pageSize)) {
            pageSize = DictConstant.PRODUCT_DEFAULT_PAGE_SIZE;
        }
        List<Product> products = productDao.selectPage(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
        if (products.isEmpty()) {
            throw new ProductNotExistException("超出了页码范围");
        }
        // 获取总数据条数
        int total = productDao.selectCount();
        PageInfo<Product> productPage = new PageInfo<>(total, Integer.parseInt(pageNo), Integer.parseInt(pageSize), products);
        return productPage;
    }

//    @Override
//    public Product findById(String id) throws RequestParameterErrorException {
//        if(ParameterUtil.isNull(id)){
//            throw new RequestParameterErrorException("您输入的编号有误,请重新输入");
//        }
//        Product product = productDao.selectByPrimaryKey(Integer.parseInt(id));
//        return product;
//    }

//    @Override
//    public List<Product> findPage(String pageNo, String pageSize) throws ProductNotExistException {
//        // 如果没有指定页码与每页数量,则给定一个默认值
//        if (ParameterUtil.isNull(pageNo)) {
//            pageNo = DictConstant.PRODUCT_DEFAULT_PAGE_NO;
//        }
//        if (ParameterUtil.isNull(pageSize)) {
//            pageSize = DictConstant.PRODUCT_DEFAULT_PAGE_SIZE;
//        }
//        List<Product> products = productDao.selectPage(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
//        if(products.isEmpty()){
//            throw new ProductNotExistException("超出了页码范围");
//        }
//        return products;
//    }
}
